package cn.oms.auth.provider.controller;

import cn.oms.auth.api.dto.res.PermissionRes;
import cn.oms.auth.api.dto.res.RoleRes;
import cn.oms.auth.api.dto.res.UserRes;
import cn.oms.auth.api.service.IUserService;
import cn.oms.auth.provider.dao.entity.Role;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author AllenChen曾晨
 * @since 2022-04-12
 */
@RestController
@RequestMapping("/auth/api")
@Slf4j
@Api(tags = "auth API接口")
public class AuthController {
    @Resource
    private IUserService userService;

    /**
     * 根据用户名获取用户信息
     * @param username
     * @return
     */
    @ApiOperation(value="根据用户名获取用户信息", notes="根据用户名获取用户信息", produces="application/json",response = UserRes.class)
    @GetMapping("/user")
    public UserRes getUser(String username){
        UserRes userRes = userService.getUserByUsername(username);
        return userRes;
    }

    /**
     * 根据用户id获取用户所有权限
     * @param id
     * @return
     */
    @ApiOperation(value="根据用户id获取用户所有权限", notes="根据用户id获取用户所有权限", produces="application/json",response = PermissionRes[].class)
    @GetMapping("/permissions")
    public List<PermissionRes> permissions(Integer id){
        return userService.getPermissionsById(id);
    }

    /**
     * 根据用户id获取用户所有角色
     * @param id
     * @return
     */
    @ApiOperation(value="根据用户id获取用户所有角色", notes="根据用户id获取用户所有角色", produces="application/json",response = RoleRes[].class)
    @GetMapping("/roles")
    public List<RoleRes> roles(Integer id){
        return userService.getRolesById(id);
    }

}
